package com.xk._01基础篇._00LeetCode._链表;

/*
 * 83. 删除排序链表中的重复元素
 * https://leetcode.cn/problems/remove-duplicates-from-sorted-list/
 *
 *  给定一个已排序的链表的头 head ，
 *  删除所有重复的元素，使每个元素只出现一次 。
 *  返回已排序的链表 。
 */
public class Test05 {
    public ListNode deleteDuplicates(ListNode head) {
        //没有元素 或者 只有一个元素
        if (head == null || head.next == null) return head;
        ListNode prev = head;//前一个元素
        ListNode next = head.next;//后一个元素

        while (next != null){
            if (prev.val == next.val){
                prev.next = next.next;
            } else {
                prev = prev.next;
            }
            next = next.next;
        }

        return head;
    }

    public ListNode deleteDuplicates1(ListNode head) {
        ListNode cur = head;

        while (cur != null && cur.next != null){
            if (cur.val == cur.next.val){
                cur.next = cur.next.next;
            } else {
                cur = cur.next;
            }
        }

        return head;
    }

    public static void main(String[] args) {
        ListNode listNode1 = new ListNode(1);
        ListNode listNode2 = new ListNode(1);
        ListNode listNode3 = new ListNode(2);
        ListNode listNode4 = new ListNode(3);
        ListNode listNode5 = new ListNode(3);

        listNode1.next = listNode2;
        listNode2.next = listNode3;
        listNode3.next = listNode4;
        listNode4.next = listNode5;



        new Test05().deleteDuplicates(listNode1);

    }
}
